1. Field of the Invention
The present invention relates to computer system input devices such as a digitizers referred to as touchpads and more particularly to commands and protocols necessary to communicate signals acquired from such input devices to the computer system to control the movement of a cursor upon a display screen or for the computer system to communicate initial operating parameters to the input devices.
2. Description of Related Art
Touchpads are small digitizer based devices that are pen input devices to allow a person to write or draw upon the surface of the touchpad and have the signals and codes from a controller to be interpreted by a computer system. The touchpad digitizers may be of three types, capacitive, resistive and electromagnetic.
Referring to FIG. 1, the surface 12 of the touchpad becomes a "writing surface" for capturing the position of an pointed object 10 such as a finger, pen or stylus upon the touchpad. The touchpad signals are analog signals that will be captured by a touchpad interface circuit 28 and translated to digital codes that will be transferred to a computer system 32 on an interface 30. The interface 30 may be an industry standard serial interface, an industry standard parallel interface, or a custom interface requiring special adapter circuitry within the computer system 32 to accept the digital codes from the touchpad interface 28.
An example of a resistive touchpad is shown in FIG. 1. The resistive touchpad is made up of multiple layers of resistive films and protective layers. The protective hard coating 12 is the surface onto which the pointed object 10 is pressed upon during the writing and drawing. A first layer of resistive film 14 is attached to the protective hard coating 12 on the surface opposite the writing surface. This first layer of resistive film forms the Y-plane of the touchpad. Attached to the surface of the Y-plane resistive film 14 opposite the surface attached to the hard protective coating 12 is a second resistive film 16. This second resistive film 16 forms the X-plane of the touchpad. Finally attached to the side of the X-plane resistive film 16 is a supporting back layer 18. This back layer provides protection and mechanical support for the for the X-plane and Y-plane resistive films 14 and 16.
The touchpad interface 28 is connected through the touchpad interface lines 20, 22, 24, and 26. Each line will provide a stimulus such as a current or voltage to the periphery of the X-plane resistive film 16 and the Y-plane resistive film 14. As the pointed object 10 is pressed on the touchpad surface 12, the Y-plane resistive film 12 will deform and touch the X-plane resistive film 14. The X-plane resistive film can not deform because it is supported by the supporting back layer 18. This causes the Y-plane resistive film 14 and the X-plane resistive film 16 to come into contact with each other. This will cause a response in the form a change in voltage or current depending upon whether the stimulus from the touchpad interface 28 is a constant voltage or a constant current. If the stimulus from the touchpad interface 28 is a constant voltage the currents through the touchpad interface lines 20, 22, 24, and 26 will be modified according to the position of the pointed object 10 on the touchpad surface 12. However, if the stimulus from the touchpad interface is a constant current the voltages between the touchpad interface lines 20, 22, 24, and 26 will be modified according to the position of the pointed object 10 on the touchpad surface 12.
The touchpad interface 28 will have a set of analog to digital converters that will sense the change in the analog responses from the touchpad interface lines 20, 22, 24, and 26 and convert them to digital codes indicating the absolute position of the pointed object 10 upon the touchpad surface 12. The digital codes may be transmitted directly to the computer system across the interface 30 and translated to absolute coordinates within the computer system or the touchpad interface 28 may determine the absolute coordinates and transmit them directly to the computer system 32. For the computer system 32 to use the absolute coordinates generated by the touchpad interface 28 to control the movement of the cursor 36 upon the display screen 34, these absolute coordinates must be modified to codes that define the relative motion of the cursor 36. The relative motion will be the speed and direction of the cursor 36 as it is moved across the display screen 34. The modification from absolute coordinates to relative motion information must be done with in a cursor control program resident within the computer system 32.
A mouse is a point and click device that can be attached to a computer system to control the movement of a cursor on a display screen of the computer system. As described in "A Hardware and Software Resolution For A Pointing Device" AN569, in the Embedded Control Handbook, Microchip Technology Inc., 1994, "a standard motion translator for mice is the use of two slotted wheels, one each for horizontal and vertical direction. Also, there are two optical receivers per slotted wheel. As the slotted wheel turns, infrared beams of light are alternately transmitted and blocked, thereby sending a series of ones and zeros to optical transistor receivers. The two optical receivers are offset from each other such that the resulting signals are 90.degree. degrees out of phase. The phase difference results in two distinctly separate signals. The (mouse) controller interprets what direction the mouse is moving along either axis by the order is receives those two signals." The mouse controller counts the number of pulses per unit time and since the spacing of the slots and bars is uniform and equal in number, the relative velocity along each axis is calculated.
The direction and relative velocity are coded to set of mouse motion digital codes. These codes may be of several formats. Two representative mouse motion digital codes are shown in Table 1. The first is for the Microsoft Mouse from Microsoft Corp. and the second is for the PS/2 Mouse from International Business Machines (IBM).
TABLE 1 ______________________________________ Microsoft Mouse Format Byte Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ______________________________________ 1 not used 1 L R W V6 H7 H6 2 not used 0 H5 H4 H3 H2 H1 H0 3 not used 0 V5 V4 V3 V2 V1 V0 ______________________________________ IBM PS/2 MOUSE FORMAT Byte Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ______________________________________ 1 Y OVR X OVR Y SIGN X SIGN RES RES SB PB FLOW FLOW ______________________________________ 2 DELTA X MOTION 3 DELTA Y MOTION ______________________________________
For the Microsoft Mouse, Bit 5 of Byte 1 indicates if the left button of the mouse is depressed. Bit 4 of Byte 1 indicates if the right button of the mouse is depressed. Bits 3 and 2 of Byte 1 and bits 0 through 5 of the Byte 3 indicate the relative motion of the mouse in the vertical direction. Bits 1 and 0 of the Byte 1 and bits 0 through 5 of Byte 2 indicate the relative motion of the mouse in the horizontal direction. These codes form signed binary numbers. If the vertical signed binary number V0:V7 is positive the mouse is moving downward and if the vertical signed binary number V0:V7 is negative the mouse is moving upward. If the signed binary number H0:H7 is positive the mouse is moving toward the right and if the signed binary number H0:H7 is negative, the mouse if moving toward the left. The magnitudes of the horizontal H0:H7 and the vertical V0:V7 signed binary numbers indicate the relative velocity of the mouse movement.
For the IBM PS/2 mouse, Bit 0 of the first Byte indicates the Primary (in the Microsoft Mouse Left Mouse Button) Mouse button has been pressed. Bit 1 of the first Byte indicates the Secondary (in the Microsoft Mouse Right Mouse Button) Mouse button has been pressed. Bits 2 and 3 of the first Byte are reserved and not used. Bit 4 of the first Byte is an X direction sign bit, where if it is a 1, the X data (or horizontal) is negative and Bit 5 of the first Byte is a Y direction sign bit, where if it is a 1 the Y data (vertical) is negative. Bit 6 and Bit 7 of the first Byte are overflow bits for the X and Y data respectively, indicating that the mouse is traveling faster than the circuitry can reliably calculate its velocity. Byte 2 indicates the total movement (Delta X)of the mouse in the X direction since the last report of movement. Byte 3 indicates the total movement (Delta Y)of the mouse in the Y direction since the last report of movement.
TABLE 2 ______________________________________ COMMAND CODE, DATA ______________________________________ Reset FFh Resend FEh Set Default F6h Disable Reporting F5h Enable Reporting F4h Set Report Rate F3h, XXh Read Device Type F2h Set Remote Mode F0h Set Wrap Mode EEh Reset Wrap Mode ECh Read Data EBh Set Stream Mode EAh Status Request E9h Set Resolution E8h, XXh Set Scaling E7h Reset Scaling E6h ______________________________________
For a mouse controller designed to the IBM PS/2 mouse protocol, a set of commands transferred from the computer system will establish the operating characteristics of the mouse controller. Table 2 shows the mode commands for an IBM PS/2 controller. As described in the Product Specification for the MT41110, Microchip Data Book, Microchip Technology Corporation, 1995, the IBM PS/2 mode commands are explained as follows:
RESET
This command initiates a reset sequence in the mouse controller. All internal registers and communication parameters are cleared. The status registers are set to their default condition. The mouse controller responds to the computer system with a Code of Mh followed by a 00h to inform the computer system that the mouse is a standard mouse. PA1 When the mouse controller receives an invalid command, the mouse controller will transmit the RESEND command to the computer system. The mouse controller will ignore any invalid command and continue to operate at the present mode. PA1 The computer system may send a RESEND command to the mouse controller. The mouse controller will retransmit the last data transmitted to the computer system. PA1 All the mouse controller parameters will be reset to those that existed at the power-up state. PA1 The mouse controller is prevented from transmitting data while the controller is in STREAM MODE. The mouse controller will respond to commands from the computer system that do not require a response. If the computer system needs to have a response from the mouse controller, the STREAM MODE must be disabled before the computer system sends a command that requires a response. PA1 The mouse controller will be able to send data other than the relative motion codes during the stream mode. This command has no effect during the REMOTE MODE. PA1 The report rate status register is updated to the new data contained in the second byte of the command. This establishes the rate at which the mouse controller send the relative motion digital codes to the computer system. PA1 The mouse controller responds to this command with a digital code indicating the type of device(00h) is being used as a pointing device. PA1 In the remote mode, the relative motion digital codes are transmitted to the computer system only when the mouse controller receives the READ DATA command. PA1 In the wrap mode the mouse controller will echo each command that is transmitted to the mouse controller back the computer system. RESET and RESET WRAP MODE will cancel the wrap mode and the mouse controller will not longer echo each command from the computer system. The wrap mode can be set in each of the reporting modes, REMOTE MODE or STREAM MODE. PA1 This command will instruct the mouse controller to reset the wrap mode and cease the echoing of the commands back to the computer system. PA1 The mouse controller will transmit the relative motion digital codes to the computer system in response to this command. This command can be issued in REMOTE MODE or STREAM MODE and the mouse controller will transmit the data even if there has been no button pushed or any motion from the mouse since the last report. PA1 The mouse controller will send the relative motion digital codes each time they are compiled. PA1 The mouse controller will send a three byte status report at the receipt of this command from the computer system. The status bytes are defined as follows: PA1 The mouse controller will assume one of four resolutions dependent on the second byte of the command. The physical resolution of the mouse, which is fixed and cannot be modified, is divided by divisor as indicated in the following: PA1 Scaling is used to provide a coarse/fine tracking response at the end of a sample interval in stream mode, the current X and Y data values are converted to new values. The sign bits are not involved in this conversion. PA1 The relation between the input counts and the output counts is as follows: PA1 2:1 scaling is only performed in stream mode. In response to "Read Data" command the MOUSE will transmit the current value before conversion. PA1 Upon receipt of this command the mouse controller will reset the scaling factor to 1:1 from the scaling factor of the SET SCALING FACTOR command. PA1 a) a set Autocursor Mode command to activate an Autocursor Mode, deactivate the Autocursor Mode, to set the Autocursor Mode to move the cursor only and to set the autocursor mode to move the cursor and an object upon the display screen attached to the cursor; PA1 b) a set edgezone boundary command to establish a first boundary between a workzone and an edgezone upon the touchpad; PA1 c) a set first minimum edge movement threshold command to set a value of the absolute digital codes at which the autocursor mode is be conditionally activated, wherein the set first minimum edge movement threshold command contains the value of a minimum distance between a last sampling of the absolute digital codes prior to the pointed object crossing the boundary of the edgezone and a first sampling of the absolute digital codes subsequent to crossing the boundary of the edgezone to conditionally activate the autocursor mode; PA1 d) a set second minimum edge movement threshold command to set a value of the absolute digital codes at which the autocursor mode is be unconditionally activated, wherein the set second minimum edge movement threshold command contains the value of the minimum distance from the first sampling of the absolute digital codes subsequent to crossing the boundary of the edgezone to a second sampling of the absolute digital codes subsequent to crossing the boundary of the edgezone to unconditionally activate the autocursor mode PA1 e) a set deadzone boundary command to establish the boundary between the edgezone and the deadzone, wherein this command contains the value of the absolute coordinates for this boundary; PA1 f) a set autopower save time command to establish the amount of time that the pointed object must be not in contact for the autopower save circuitry to create the autopower save signal to power down the pen-input mouse controller, wherein this command contains a code that indicates the amount of time that the pen must not be in contact with the touchpad; PA1 g) a set first finger on time command to establish the amount of time that the pointed object must on the touchpad surface to establish the stroke signal that contains the single click, double click, move, press and drag mouse operations; PA1 h) a set second finger off time command to establish the amount of time that the pointed object must off the touchpad surface to establish the stroke signal that contains the single click, double click, move, press, and drag mouse operations; PA1 i) a set third finger on time command to establish the amount of time that the pointed object must on the touchpad surface to establish the stroke signal that contains the double click and drag mouse operations; PA1 j) a set fourth finger off time command to establish the amount of time that the pointed object must off the touchpad surface to establish the stroke signal that contains the double click; PA1 k) a set minimum mouse movement threshold to set the minimum increment in the value of the relative motion digital codes that will be reported to the computer system PA1 l) a set pen input mode to change the operation of the pen-input mouse controller to either the pen-input mode, if selected to report the absolute relative motion digital codes to the computer system and to the mouse mode if selected to report to the relative motion digital codes to the computer system; PA1 m) a set three dimensional mode to set the pen-input mouse controller to report either the relative motion digital codes if mouse mode selected and the absolute coordinate digital codes and the pressure digital codes if pen-input mode selected, wherein the pressure digital codes will contain the vertical information and may be used to sense the distance the pointed object is from the surface of the touchpad for a capacitive touchpad or the pressure the pointed object upon the touchpad for a resistive touchpad; PA1 n) a set mouse mode command to instruct the pen-input mouse controller to transmit the relative motion digital codes in according the selected mouse format; PA1 o) a set average algorithm command to instruct the pen-input mouse controller an averaging algorithm of the set of averaging algorithms to use during the pen-input mode, wherein the algorithm will establish the absolute coordinate digital codes; and PA1 p) a set pressure threshold command set the minimum pressure of the pointed object upon the touchpad necessary to activate the touchpad and have the pen-input mouse controller report the mouse motion digital codes or the absolute coordinate digital codes.
RESEND
SET DEFAULT
DISABLE REPORTING
ENABLE REPORTING
SET REPORT RATE
READ DEVICE TYPE
SET REMOTE MODE
SET WRAP MODE
RESET WRAP MODE
READ DATA
SET STREAM MODE
STATUS REQUEST
______________________________________ Byte 1 Bit Description ______________________________________ 0 1 = Secondary (Right) Button Depressed 1 Reserved 2 1 = Primary (Left) Bufton Depressed 3 Reserved 4 1 = 2:1 Scaling 5 1 = Enabled 6 1 = Remote Mode 7 Reserved Byte 2 Current Resolution Byte 3 Current Sample Rate ______________________________________
SET RESOLUTION
______________________________________ Second byte Description ______________________________________ 0 divide by 8 1 divide by 4 2 divide by 2 3 divide by 1 ______________________________________
SET SCALING
______________________________________ Input Output ______________________________________ 0 0 1 1 2 1 3 3 4 6 5 9 N 2.0 .times. N ______________________________________
RESET SCALING
Referring back to FIG. 1, if the touchpad is to emulate the mouse movements, when the cursor 36 is moved across the display screen 34 for a relatively long distance, the pointed object 10 must be repeatedly lifted and placed back on the touchpad surface 12 giving a "rowing" motion to get the cursor 36 to move the long distance. In traditional mouse operations, if the cursor 36 is to drag an object being displayed upon the display screen 34 a button on the mouse is depressed while the mouse is moved. The button can be held depressed while the mouse is moved in the rowing motion to drag the object across the display screen 34. This is difficult to accomplish on the touchpad. If the pointed object 10 is lifted from the touchpad, the touchpad interface 28 will not be able to communicate the "rowing" motion to indicate that the cursor 36 is to travel a long distance. Also, the touchpad interface 28 will not be able to communicate that there is an intention for the cursor 36 to drag the object on the display screen 34. Additional buttons must be added to the touchpad or special areas within the surface of the touchpad surface 12 in order for the touchpad interface 28 to communicate the desire for the cursor 36 to be moved long distances across the display screen 34 or that the cursor 36 is to drag objects upon the display screen 34.
U.S. Pat. No. 5,327,161 (Logan, et al.) use a method to emulate mouse input devices using a program resident within a computer system. A touchpad input device has a controller that generates a digital code that contains the absolute position of a pen or finger on the mouse pad. This requires a special interface that is unique to the touchpad circuitry. Additionally, this patent describes a method for the continuation of cursor movement when a pointed object is touching the touchpad and has been moved on the touchpad to a special border area. The pointed object must be stopped within the border for the continuous motion to be engaged. The direction of the scrolling may be made as a modification of the original direction and velocity of the pen prior to the transiting and stopping within the border area of the touchpad. This modification will be made as a change in the velocity of the movement of the cursor along an axis parallel to the edge of the touchpad adjacent to the border area where the pointed object is resting.
U.S. Pat. No. 5,376,946 (Mikan) describes a circuit using an EPROM to convert signals from a touch screen adhered to a computer display screen to digital codes of the industry standard computer input mouse protocols.
U.S. Pat. No. 5,543,590 (Gillespie, et al.) describes a capacitive sensor system that can detect the location of a finger or stylus on a sensor matrix. The location is determined and translated as electrical signals for use in other circuitry such as a computer system to control a cursor upon a display screen. Further this patent discusses an "edge motion" detection feature that will allow a finger or stylus within a "outer zone" of the sensor matrix to move the cursor to move across a display screen for long distances and avoid the "rowing" motion.
U.S. Pat. No. 5,543,591 (Gillespie, et al.) discloses methods for recognizing tapping, pushing, hopping and zigzagging gestures upon a conductive sensor pad that can be interpreted into cursor control motions such as clicking, double clicking, and click and drag use with computer mouse devices. Further this patent also describes the "edge motion" feature as described in U.S. Pat. No. 5,543,590 (Gillespie, et al.).